<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // 回调函数 : 将一个函数当成参数传递
    // 解决异步 

    // function Fn(n) {
    //   n(1)
    //   n(1)
    //   n(1)
    //   // console.log(n);
    // }
    // Fn(function (a) {
    //   console.log('函数执行了',a);
    // })

    // 函数默认的返回值是undefined
    // username admin pwd 123456 
    function Fn(username,pwd,callback) {
      // callback('123456')
      setTimeout(() => {
        // callback('123456')
        if (username === 'admin' && pwd === '123456') {
          callback('登录成功')
          // return '登录成功'
        } else {
          callback('登录失败')
          // return '登录失败'
        }
      }, 0);
    }
    // const result = Fn('admin1','123456')
    // console.log(result);

    Fn('admin','123456',function (res) {
      console.log('函数调用了',res);
    })










    // JS是单线程,浏览器是多线程,如果js代码在执行的过程中,遇到异步代码,交给浏览器去执行

    // 同步：一定要等任务执行完了，得到结果，才执行下一个任务。  容易造成程序阻塞
    // 异步：不等任务执行完，直接执行下一个任务。
    /*
      定时器 延时器  ajax请求
    
    */

    // const a = 100
    // console.log(a);

    // setTimeout(() => {
    //   console.log('定时器1');
    // }, 1000);

    // setTimeout(() => {
    //   console.log('定时器2');
    // }, 50);
    // console.log('你好');

    // setTimeout(() => {
    //   console.log('定时器3');
    // }, 0);

  </script>
</body>

</html>